package com.sczmgk.hotline_pzh.view;//package com.sczmgk.hotline_pzh.view;
//
//
//import android.annotation.SuppressLint;
//import android.app.Dialog;
//import android.content.Context;
//import android.os.Handler;
//import android.os.Message;
//import android.util.AttributeSet;
//import android.view.MotionEvent;
//import android.view.View;
//import android.view.ViewGroup;
//import android.view.animation.DecelerateInterpolator;
//import android.widget.AbsListView;
//import android.widget.AbsListView.OnScrollListener;
//import android.widget.ListAdapter;
//import android.widget.ListView;
//import android.widget.Scroller;
//
//import com.sczmgk.hotline_pzh.R;
//import com.sczmgk.hotline_pzh.utils.MyLog;
//import com.sczmgk.hotline_pzh.utils.Tools;
//@SuppressLint("NewApi")
//public class AnimationListView extends ListView implements OnScrollListener{
//	@SuppressWarnings("unused")
//	private final String TAG = "AnimationListView";
//	public static final float REFRESH_PICTURE_SCALE = 120f/200f;
//	/**
//	 * 头布局的宽高比    设置高度： 设置成1 （高度==宽度）        设置成2(高度==2倍宽度)
//	 */
//	public static final float PICTURE_HEIGHT_SCALE = 1.5f;
//
//	/**
//	 *  保存最后的Y坐标
//	 */
//	private float mLastY = -1;
//	private Scroller mScroller;
//	private OnScrollListener mScrollListener;
//
//	private OnRefreshListener onRefreshListener;
//	/**
//	 * 自定义头部View
//	 */
//	private ListViewHeader mHeaderView;
//
//	/**
//	 * 头部View最外层
//	 */
//	private View mHeaderContentOutside;
//	/**
//	 * 头部View背景图片部分
//	 */
//	private View mHeaderViewBg;
//
//	/**
//	 * 头布局的高度（含消息emtity）
//	 */
//	private int mHeaderViewContentHeight;
//	/**
//	 * 头部View刷新的高度（头部View 高度*比率）
//	 */
//	private int mHeaderViewRefreshHeight;
//
//	/**
//	 * 激活下拉刷新状态
//	 */
//	private boolean mEnablePullRefresh = true;
//	/**
//	 * 是否正在下拉刷新，默认为  false
//	 */
//	private boolean isPullRefresh = false;
//	/**
//	 * 加载更多的状态
//	 */
//	private boolean mEnablePullLoad;
//	/**
//	 * 是否正在加载更多
//	 */
//	private boolean isLoadMore;
//
//	private boolean mIsFooterReady = false;
//
//	/**
//	 *  显示的数目
//	 */
//	private int mTotalItemCount;
//
//	/**
//	 * 标签值 头部和底部
//	 */
//	private int mScrollBack;
//	/**
//	 * 头部
//	 */
//	private final static int SCROLLBACK_HEADER = 0;
//	/**
//	 * 脚部
//	 */
//	private final static int SCROLLBACK_FOOTER = 1;
//
//	/**
//	 * 刷新返回的时间
//	 */
//	private final static int SCROLL_DURATION = 100;
//
//	/**
//	 *  图片与list移动的比率 值越大图片移动的越慢
//	 */
//	private final static float OFFSET_RADIO = 3f;
//
//	private Dialog loginLoadingDialog;
//
//	private Handler mUIHandler;
//
//	private Context mContext;
//
//
//	public AnimationListView(Context context) {
//		super(context);
//		initWithContext(context);
//		initHandler();
//	}
//
//	public AnimationListView(Context context, AttributeSet attrs) {
//		super(context, attrs);
//		initWithContext(context);
//		initHandler();
//	}
//
//	public AnimationListView(Context context, AttributeSet attrs, int defStyle) {
//		super(context, attrs, defStyle);
//		initWithContext(context);
//		initHandler();
//	}
//
//
//	/**
//	 * 刷新进度条
//	 */
//	private void initHandler(){
//		mUIHandler = new Handler(){
//
//			@SuppressLint("HandlerLeak")
//			@Override
//			public void handleMessage(Message msg) {
//				super.handleMessage(msg);
//
//				switch (msg.what) {
//					default:
//						break;
//				}
//			}
//
//		};
//	}
//
//	/**
//	 * 是否正在刷新
//	 * @return
//	 */
//	public boolean isPullRefreshing(){
//		return isPullRefresh;
//	}
//
//	/**
//	 * 初始化ListView  加入头布局
//	 * @param context
//	 */
//	private void initWithContext(Context context) {
//		mContext = context;
//		mScroller = new Scroller(context, new DecelerateInterpolator());
//		super.setOnScrollListener(this);//设置滚动的监听
//		// 初始化顶部View
//		mHeaderView = new ListViewHeader(context);
//		addHeaderView(mHeaderView);//加入头布局
//
//		// 顶部View的宽度
//		float screenWidth = Tools.getScreenWidth(getContext());
//		mHeaderViewBg = mHeaderView.findViewById(R.id.ll_content_bg);
//		int headviewBgHeight = (int) (screenWidth * PICTURE_HEIGHT_SCALE);
//		//设置头部背景图片的参数（宽，高）
//		ViewGroup.LayoutParams layoutParams = (ViewGroup.LayoutParams) mHeaderViewBg.getLayoutParams();
//		layoutParams.width = (int) screenWidth;
//		layoutParams.height = headviewBgHeight;
//		mHeaderViewBg.setLayoutParams(layoutParams);
//
//		mHeaderContentOutside = mHeaderView.findViewById(R.id.ll_content_outside);
//
//		postDelayed(new Runnable() {
//
//			@Override
//			public void run() {
//				resetRefreshHeight(isPullRefresh);
//			}
//		}, 500);
//		resetRefreshHeight(isPullRefresh);
//	}
//	/**
//	 * 重置刷新高度
//	 * @param isPullRefreshing   是否正在刷新
//	 */
//	private void resetRefreshHeight(boolean isPullRefreshing){
////		int messageEmptyHeight = 0;//消息 实体的高度
//
//		float screenWidth = Tools.getScreenWidth(getContext());//取屏幕宽度
//		int headviewPictureHeight = (int) (screenWidth * PICTURE_HEIGHT_SCALE);//根据宽高比计算头部View的高度（screenWidth*scale）
////		mHeaderViewContentHeight = headviewPictureHeight + messageEmptyHeight;//如有消息实体加上
//		mHeaderViewContentHeight = headviewPictureHeight;
//
//		//设置最外层Veiw宽高
//		ViewGroup.LayoutParams layoutParams = (ViewGroup.LayoutParams) mHeaderContentOutside.getLayoutParams();
//		layoutParams.width = (int) screenWidth;
//		layoutParams.height = mHeaderViewContentHeight;
//		mHeaderContentOutside.setLayoutParams(layoutParams);
//
//		mHeaderViewRefreshHeight = (int) (headviewPictureHeight*AnimationListView.REFRESH_PICTURE_SCALE);
//
//		mHeaderView.setRefreshHeight(mHeaderViewRefreshHeight,mHeaderViewContentHeight,headviewPictureHeight);
//
//		if(isPullRefreshing){
//			mHeaderView.setVisiableHeight(mHeaderViewContentHeight);
////			mHeaderView.setVisiableHeight(mHeaderViewContentHeight-mHeaderViewRefreshHeight);
//		}else{
////			mHeaderView.setVisiableHeight(mHeaderViewContentHeight);
//			mHeaderView.setVisiableHeight(mHeaderViewContentHeight-mHeaderViewRefreshHeight);
//		}
//
//
//		isPullRefresh = isPullRefreshing;
//	}
//
//
//	@Override
//	public void setAdapter(ListAdapter adapter) {
//		// 如果底部View到最后一行 择立即添加显示
//		if (mIsFooterReady == false) {
//			mIsFooterReady = true;
////			addFooterView(mFooterView);
//		}
//		super.setAdapter(adapter);
//	}
//
//	/**
//	 * 下拉刷新控制 View的显示隐藏
//	 * @param enable
//	 */
//	public void setPullRefreshEnable(boolean enable) {
//		mEnablePullRefresh = enable;
//		if (!mEnablePullRefresh) { // disable, hide the content
//		} else {
//		}
//	}
//
//	/**
//	 * 正在刷新
//	 */
//	public void doingPullRefreshing(){
//		isPullRefresh = true;
//		mHeaderView.setState(ListViewHeader.STATE_REFRESHING);
//		resetRefreshHeight(isPullRefresh);
//	}
//
//	/**
//	 * 停止刷新
//	 *
//	 */
//	public void stopRefresh() {
//		if (mHeaderView.getState()==ListViewHeader.STATE_REFRESHING) {
//			isPullRefresh = false;
//			mHeaderView.setState(ListViewHeader.STATE_NORMAL);
//			resetHeaderHeight();
//		}
//	}
//
//	/**
//	 * 调用ListView滚动
//	 */
//	private void invokeOnScrolling() {
//		if (mScrollListener instanceof MyOnScrollListener) {
//			MyOnScrollListener myOnScrollListener = (MyOnScrollListener) mScrollListener;
//			myOnScrollListener.mOnScrolling(this);
//		}
//	}
//
//
//	/**
//	 * 更新头布局的位置，即用手指移动的距离 加上头布局的高度
//	 *
//	 * @param delta
//	 */
//	private void updateHeaderHeight(float delta) {
//		if(mHeaderView.setVisiableHeight((int) delta+ mHeaderView.getVisiableHeight())){
//			setSelection(0);
//		}
//
//	}
//
//	/**
//	 * 重新设置 顶部View的高度
//	 *
//	 */
//	private void resetHeaderHeight() {
//
//		int height = mHeaderView.getVisiableHeight();
//		if (height == 0)
//			return;
//
//
//		//正在刷新并且  没有拖到屏幕之外  我们不做处理
//		if (isPullRefresh && height <= mHeaderViewContentHeight) {
//			return;
//		}
//		//如果还没有到刷新临界点不需要处理
//		if(height<(mHeaderViewContentHeight-mHeaderViewRefreshHeight)){
//			return;
//		}
//
//
//		int finalHeight = 0;
//		//正在刷新  并且拖到了屏幕之外  我们得滚回来
//		if (isPullRefresh && height > mHeaderViewContentHeight) {
//			finalHeight = mHeaderViewContentHeight;
//		}
//		//如果不是处于刷新状态    并且过了刷新临界点  我们得滚回临界点
//		else if(!isPullRefresh && height>=(mHeaderViewContentHeight-mHeaderViewRefreshHeight)){
//			finalHeight = (mHeaderViewContentHeight-mHeaderViewRefreshHeight);
//		}
//		mScrollBack = SCROLLBACK_HEADER;
//		MyLog.d(TAG, "height: " + height + "   finalHeight: " + finalHeight + "    dy: " + (finalHeight - height));
//
//
//		//调用移动
//		mScroller.startScroll(0, height, 0, finalHeight - height,SCROLL_DURATION);
//		invalidate();//调用它会使 computeScroll方法执行
//	}
//
//	private int startY = -1;
//	@SuppressLint("NewApi")
//	@Override
//	public boolean onTouchEvent(MotionEvent ev) {
//		if (mLastY == -1) {
//			mLastY = ev.getRawY();
//		}
//
//		switch (ev.getAction()) {
//		case MotionEvent.ACTION_DOWN:
//			mLastY = ev.getRawY();
//			startY = (int)ev.getY();
//			break;
//		case MotionEvent.ACTION_MOVE:
//			int currentY = (int)ev.getY();
//			int offY = currentY - startY;
//			final float deltaY = ev.getRawY() - mLastY;
//			mLastY = ev.getRawY();
////				if(Math.abs(offY)<300){
//
//					if (getFirstVisiblePosition() == 0 ) {
//						//如果正在刷新
//						if(getChildAt(1)==null||getChildAt(1).getTop()>=(mHeaderViewContentHeight-mHeaderViewRefreshHeight)){
//							setOverScrollMode(AnimationListView.OVER_SCROLL_NEVER);
//							updateHeaderHeight(deltaY / OFFSET_RADIO);
//							invokeOnScrolling();
//						}
//					}
////				}
//			break;
//		default:
//			mLastY = -1;
//			setOverScrollMode(AnimationListView.OVER_SCROLL_ALWAYS);
//			if (getFirstVisiblePosition() == 0) {//如果当前是第一条，下拉刷新
//
//				MyLog.e(TAG,"第一条 显示高度是："+ mHeaderView.getVisiableHeight()+"   头布局的高度是： "+mHeaderViewContentHeight);
//				if (mEnablePullRefresh&& mHeaderView.getVisiableHeight() > mHeaderViewContentHeight/2) {//如果是头布局显示的高度>头布局的高度，则是下拉刷新
//
//
//					mHeaderView.setState(ListViewHeader.STATE_REFRESHING);//调用刷新
//
//					if (onRefreshListener != null&&!isPullRefresh) {
//
//						isPullRefresh = true;
//
//						onRefreshListener.onRefresh();
//					}
//
//				}
//				resetHeaderHeight();
//			}
//			break;
//		}
//		return super.onTouchEvent(ev);
//	}
//
//	@SuppressLint("NewApi")
//	@Override
//	public void computeScroll() {
//		if (mScroller.computeScrollOffset()) {
//			if (mScrollBack == SCROLLBACK_HEADER) {
//				mHeaderView.setVisiableHeight(mScroller.getCurrY());
//			}
//			postInvalidate();
//			invokeOnScrolling();
//		}
//		super.computeScroll();//调用自身
//	}
//
//	@Override
//	public void setOnScrollListener(OnScrollListener l) {
//		mScrollListener = l;
//	}
//
//	@Override
//	public void onScrollStateChanged(AbsListView view, int scrollState) {
//		if (mScrollListener != null) {
//			mScrollListener.onScrollStateChanged(view, scrollState);
//		}
//	}
//
//	@Override
//	public void onScroll(AbsListView view, int firstVisibleItem,
//			int visibleItemCount, int totalItemCount) {
//		mTotalItemCount = totalItemCount;
//		if (mScrollListener != null) {
//			mScrollListener.onScroll(view, firstVisibleItem, visibleItemCount,
//					totalItemCount);
//		}
//	}
//
//	public void setRefreshListener(OnRefreshListener onRefreshListener) {
//		this.onRefreshListener = onRefreshListener;
//	}
//
//	/**
//	 *
//	 *  滚动的监听接口，继承了OnscrollListener
//	 */
//	public interface MyOnScrollListener extends OnScrollListener {
//		/**
//		 * 当滚动是的回调
//		 * @param view
//		 */
//		void mOnScrolling(View view);
//	}
//
//	/**
//	 * 定义接口 实现下拉刷新和加载更多
//	 *
//	 */
//	public interface OnRefreshListener {
//		/**
//		 * 下拉刷新的回调
//		 */
//		void onRefresh();
//		/**
//		 * 加载更多的回调
//		 */
//		void onLoadMore();
//	}
//
//	/**
//	 * 关闭正在加载
//	 */
//	protected void dismissLoadingDialog(){
//		if (loginLoadingDialog != null && loginLoadingDialog.isShowing()) {
//            loginLoadingDialog.dismiss();
//        }
//	}
//	/**
//	 * 显示正在加载
//	 * @param strResource
//	 */
//	protected void showLoaddingDialog(int strResource){}
//}
